import tensorflow as tf 
import numpy as np

dataset = tf.data.Dataset.from_tensor_slices(np.arange(10))  # 也支持元组的字典
for item in dataset:  # 数据集是个迭代器 可以遍历
    print(item)

dataset = dataset.repeat(3).batch(7)  # 数据重复3遍  7个数据为一个batch
for item in dataset: 
    print(item)
    
# interleave
# 把数据集里面每一项取出来 做一个操作 最后把结果组成一个新的数据集
# case : 数据集里面是文件名 每次取出文件组成一个新的dataset 最后组成一个大的dataset
dataset = dataset.interleave(
    map_func = lambda v:tf.data.Dataset.from_tensor_slices(v),  # 做的操作的函数
    cycle_length = 5,  # 并行程度
    block_length = 5,  # 每次从一个数据里取多少个子数据 （数据集中一个数据可能是列表之类的）
)
for item  in dataset :  # 遍历一下新的大数据集  依次从各个数据集取5个 最后不够了就按顺序去各个数据集取  有均匀混合的效果
    print(item)

# form_tensor_slices( ) 除了array数组 也支持传入元组的字典
# 元组
x = np.array([[1,2],[3,4],[5,6]])
y = np.array(['cat','dog','fox'])
dataset = tf.data.Dataset.from_tensor_slices((x,y))
for item_x,item_y in dataset: 
    print(item_x,item_y)  # 可以用.numpy方法转换成numpy格式

# 字典 : 设置数据集为字典格式
dataset = tf.data.Dataset.from_tensor_slices({"feature":x, "label":y})
for item in dataset: 
    print(item['feature'],item['label'])

